home *** CD-ROM | disk | FTP | other *** search
/ NeXT Education Software Sampler 1992 Fall / NeXT Education Software Sampler 1992 Fall.iso / SoundAndMusic / cmix / Minc / lex.l < prev    next >
Text File  |  1991-03-16  |  1KB  |  50 lines

  1. %START INIT COM 
  2. %{
  3. #include "y.tab.h"
  4. int     comments=0;
  5. %}
  6. l     [a-zA-Z]
  7. dig    [1234567890]
  8. real        ({dig}+)((".")({dig}*)(("E"|"e")(("+"|"-")?)({dig}+))?)?
  9. real2        (".")({dig}+)(("E"|"e")(("+"|"-")?)({dig}+))?
  10. num        {dig}+
  11.  
  12.  
  13.  
  14. %%
  15. <INIT>"/*"        {BEGIN COM;comments++;}
  16. <COM>"/*"        {comments++;}
  17. <COM>.|\n        ;
  18. <COM>"*/"        {comments--;if (comments==0){BEGIN INIT;}}
  19. <INIT>{real}        return(NUM);
  20. <INIT>{real2}        return(NUM);
  21. <INIT>"<>"|"!="            return (UNEQU);
  22. <INIT>"<="        return (LESSEQU);
  23. <INIT>">="        return (GTREQU);
  24. <INIT>"=="        return (T_EQU);
  25. <INIT>"**"|"^"        return (T_POW);
  26. <INIT>"\""[^\"]*"\""     return (STRING);
  27. <INIT>[fF][oO][rR]        return (FOR);
  28. <INIT>[iI][fF]            return (IF);
  29. <INIT>[eE][lL][sS][eE]        return (ELSE);
  30. <INIT>[wW][hH][iI][lL][eE]    return (WHILE);
  31. <INIT>[aA][nN][dD]        return (T_AND);
  32. <INIT>"&&"            return (T_AND);
  33. <INIT>[nN][oO][tT]        return (T_NOT);
  34. <INIT>"!"|"~"            return (T_NOT);
  35. <INIT>[oO][rR]            return (T_OR);
  36. <INIT>"||"            return (T_OR);
  37. <INIT>[tT][rR][uU][eE]        return (T_TRUE);
  38. <INIT>[fF][aA][lL][sS][eE]    return (T_FALSE);
  39. <INIT>[fF][lL][oO][aA][tT]    return (FLT);
  40. <INIT>[=><{},;*+-]        return (*yytext);
  41. <INIT>"["|"]"|"/"        return (*yytext);
  42. <INIT>"("|")"            return (*yytext);
  43. <INIT>"\n"            ;
  44. <INIT>" "|"\t"            ;
  45. <INIT>{l}({l}|{dig}|"#"|"_"|".")*     return (ID);
  46. <INIT>.            yyerror("illegal character");
  47. .|"\n"            {BEGIN INIT;unput(yytext[0]);}
  48. %%
  49.  
  50.